package top.linruchang.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Collection;
import java.util.stream.Collectors;

/**
 * 作用：内容正则表达式枚举
 *
 * @author LinRuChang
 * @version 1.0
 * @date 2020/10/25
 * @since 1.8
 **/
@Getter
@AllArgsConstructor
public enum RegexContentEnum {

    /**
     * 匹配单行、块级注释
     */
    //注释正则 - 匹配块级、单行注释 - 特别注意.号可能不匹配换行符\n故需要显示写出来 - 坑惨了
    //COMMENT("[\\t ]*/((\\*(.|\\n)+?\\*/)|(/(.|\\n)+?))\\r\\n", "匹配单行、块级注释"),
    COMMENT("[\\t ]*/((\\*(.|\\s)+?\\*/)|(/(.|\\s)+?))\\r\\n", "匹配单行、块级注释"),

    /**
     * 匹配空行
     */
    BLANK_LINE("(?<=\\r\\n)([\\t| ]*\\r\\n)+", "匹配空行"),
    BLANK_LINE2("\\n[\\s| ]*\\r", "匹配空行"),

    /**
     * 匹配swagger注解行
     */
    SWAGGER_ANNOTATION ("[\\t| ]*@Api.*?\\r\\n", "匹配swagger注解行"),

    /**
     * 匹配中文
     */
    CHINESE("([\u4e00-\u9fa5]+)", "匹配中文");


    /**===========================================================================================*/

    /**正则*/
    String regex;
    /**描述*/
    String description;

    /**获取java文件内容相关的正则*/
    public static Collection<String> getEnumAllRegex() {
        return Arrays.stream(values()).map(RegexContentEnum::getRegex).collect(Collectors.toSet());
    }

}
